检测和循环
C++提供了一组很方便的用于表示选择和循环的语句。举例来说,这里是一个简单的函数,它提示用户输入,并返回一个布尔值代表这个输入:
bool accept()
{
cout << "Do you want to proceed(y or n)?\n"; // 写出提问
char answer = 0;
cin >> answer; // 读回答
if(answer == 'y') return true;
return false;
}
运算符 <<
(“送出”)用做输出运算符;cout
是标准输出流。运算符 >>
("取出")用做输入运算符;cin
是标准输入流。>>
的右运算对象的类型确定能接受什么样的输入,它也作为输入操作的目标。在输出字符串最后的 \n
字符表示换行。
通过将回答 'n' 也纳入考虑的范围,可以对这个例子做一点改进:
bool accepts()
{
cout << "Do you want to proceed(y or n)?\n"; // 写出提问
char answer = 0;
cin >> answer; // 读回答
switch(answer)
{
case 'y':
return true;
case 'n':
return false;
default:
cout << "I'll take that for a no.\n";
return false;
}
}
这里的 switch
语句对照一组常量检查一个值,这些分情况常量必须互不相同。而如果这个值与所有常量都不匹配,那么就选择 default
。程序员可以不提供 default
。
很少有程序里不包含循环。对于目前情况,我们可能希望允许用户试几次:
bool accept3()
{
int tries = 1;
while(tries < 4)
{
cout << "Do you want to proceed(y or n)?\n"; // 写出提问
char answer = 0;
cin >> answer;
switch(answer)
{
case 'y':
return true;
case 'n':
return false;
default:
cout << "Sorry, I don't understand that.\n";
tries = tries + 1;
}
}
cout << "I'll take that for a no.\n";
return false;
}
这里的 while
语句一直执行到条件变成false为止。
🔚